home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
L' Effet Pommier 3
/
L'Effet Pommier - Volume 03.iso
/
Programmation
/
Alpha ƒ
/
Tcl
/
SystemCode
/
scheme.tcl
< prev
next >
Wrap
Text File
|
1996-01-21
|
2KB
|
64 lines
#================================================================================
# Scheme mode definition ! oleg@mozart.compsci.com (Oleg Kiselyov)
#================================================================================
#newModeVar Scm elecRBrace {1} 1
newModeVar Scm leftFillColumn {2} 0
newModeVar Scm prefixString {;; } 0
#newModeVar Scm electricSemi {1} 1
newModeVar Scm wordBreak {[^\(\) \t\r\n]+} 0
#newModeVar Scm elecLBrace {1} 1
newModeVar Scm wordWrap {0} 1
newModeVar Scm funcExpr {^[\(]define.*$} 0
#newModeVar Scm funcExpr {^[^ \t\(\r/].*\(.*\)$} 0
newModeVar Scm wordBreakPreface {[\(\) \t\r\n]} 0
#newModeVar Scm wordBreakPreface {([^a-zA-Z0-9_])} 0
newModeVar Scm optionIsMeta {1} 1
newModeVar Scm electricTab {1} 1
newModeVar Scm autoMark 0 1
set scmCommentRegexp {;.*$}
set scmPreRegexp {^\#[\t ]*[a-z]*}
set schemeKeyWords {
declare define define-macro lambda let let* letrec begin cond case do else
delay and or if set! #t #f
not eqv? eq? equal? pair? cons car cdr set-car! set-cdr!
caar cadr cdar cddr null? list? list length
append reverse list-ref memq memv member assq assv assoc
= < > <= >= zero? positive? negative? odd?
even? + * - / abs
exact->inexact inexact->exact number->string
string->number char?
string string-length string-ref string-set! string=?
substring string-append vector?
make-vector vector vector-length vector-ref vector-set! procedure?
apply map for-each call-with-current-continuation
eof-object? read-char peek-char
}
#regModeKeywords -e {;} -c cyan -k blue Scm $schemeKeyWords -i ")" -i "(" -i "," -i "." -I red
regModeKeywords -e {;} -c cyan -k blue Scm $schemeKeyWords
#================================================================================
proc dummyScm {} {}
proc ScmMarkFile {} {
set pat1 {^[ \t]*[\(][#a-zA-z]*(define|define-[a-zA-Z]+) +[\(]*([^\(\) \t\r\n]+)}
set end [maxPos]
set pos 0
set l {}
while {![catch {search -f 1 -r 1 -m 0 -i 1 $pat1 $pos} mtch]} {
regexp -nocase $pat1 [eval getText $mtch] allofit defunname name
set start [lindex $mtch 0]
set end [nextLineStart $start]
set pos $end
set inds($name) [lineStart [expr $start - 1]]
}
if {[info exists inds]} {
foreach f [lsort -ignore [array names inds]] {
set next [nextLineStart $inds($f)]
setNamedMark $f $inds($f) $next $next
}
}
}